package com.example.spring_blog.common.util;

import org.springframework.util.DigestUtils;

import java.nio.charset.StandardCharsets;
import java.util.UUID;

public class SecurityUtils {

    /**
     * 将密码进行加密
     * @param inputPassword 用户输入
     * @return 盐值 + md5(盐值+用户输入密码)
     */
    public static String encrypt(String inputPassword) {
        // 生成随机盐值
        String salt = UUID.randomUUID().toString().replace("-", "");
        // md5(盐值+inputPassword)
        String s = DigestUtils.md5DigestAsHex((salt + inputPassword).getBytes(StandardCharsets.UTF_8));
        return salt + s;
    }

    /**
     * 验证密码是否相同，先拿到盐值，将用户输入的进行盐值 + md5(盐值+用户输入密码)的方式加密，
     * 然后再判断是否与数据库中的相同
     * @param inputPassword 用户输入的密码
     * @param sqlPassword 数据库中加密的密码
     * @return
     */

    public static boolean check(String inputPassword, String sqlPassword) {
        // 拿到盐值
        String salt = sqlPassword.substring(0, 32);
        // md5(盐值+inputPassword)
        String s = DigestUtils.md5DigestAsHex((salt + inputPassword).getBytes(StandardCharsets.UTF_8));
        return sqlPassword.equals(salt + s);
    }

//    // 测试
//    public static void main(String[] args) {
//        String inputPassword = "123456";
//        // 加密
//        String encrypt = encrypt(inputPassword);
//
//        System.out.println("sqlpassword:"+encrypt);
//        // 检查
//        System.out.println(check("1234567", encrypt));
//
//    }
}
